The invention relates generally to computer systems, and deals more particularly with a technique to schedule computer program jobs for periodic execution.
Many types of computer program jobs are scheduled for periodic execution. These program job update databases, maintain databases (i.e. trim logs, purge old documents, etc.), backup data, perform other “batch jobs”, and perform routine system or user maintenance. For example, a database backup program can be scheduled to execute at midnight every day, and a database maintenance program can be scheduled to execute at six o'clock PM every Sunday. Various computer resources such as processor(s), RAM, disk storage, and I/O (input/output) may be needed to execute the program. However, occasionally, the computer has many jobs to execute at one time, and there may be inadequate resources to execute them all promptly or effectively. A deficiency of even one resource can impede the execution of the job.
It was known to evaluate the availability of computer resources before beginning to execute a program job. If the availability is low, then the execution of the program job can be delayed until more resources become available. U.S. Pat. No. 6,578,005 discloses a technique to change an execution schedule when resources become unavailable. U.S. Pat. No. 6,418,459 discloses a technique to schedule tasks based on current resource availability. It was also known for an application to report its resource needs to a scheduler so the scheduler can determine if sufficient resources are currently available to execute the application.
An object of the present invention is to schedule computer program jobs or other types of applications for execution at a regular time when sufficient computer resources are likely to be available.